package basicGrammar;

public class Demo4_Control_loop {

    /*
        循环结构
            对一些简单重复的工作可以使用循环解决
            1.while循环
              语法：while(布尔表达式){
                    循环体(重复执行的工作)
                   }
              布尔表达式：用来判断是否需要进入下一次循环的条件
                        如果表达式为 true，进入下一次循环；如果为false,循环执行完毕
              注意：布尔表达式不要使用true，否则进入死循环
                   如果while中只有一个执行语句，可以省略{},但是不建议
            2.do...while循环
              语法：do{
                    循环体(重复执行的工作)
                   }while(布尔表达式)
              与while的不同
                while是先判断布尔表达式的结果，如果为true执行，如果为false不执行
                do...while不管布尔表达式结果是什么，一定先执行一次do里的内容

            3.for循环
              语法：for(表达式1;表达式2;表达式3){
                    循环体(重复执行的工作)
                   }
                表达式1：初始化变量，只运行一次，开始循环判断之前执行
                表达式2：布尔表达式，判断是否进入循环，每次都需要判断
                表达式3：每次循环结束后执行的代码
              注意：
                表达式1可以在for外面定义，内部使用，但是不建议
                三个表达式都可以不写 for(;;) 就是一个死循环
        对三种循环方法比较：
          while 和 do...while:先判断还是先执行
          while 和 for:  while比较适合已知条件的循环；for比较适合已知次数的循环

        嵌套循环：较常用的形式，也是比较考验逻辑思维能力的

        continue 和 break
          continue:结束当次循环，进入下一次循环
          break：跳出整个循环

          注意：跳出的都是离自己最近的那层循环，再外层的循环不受影响，可以继续执行
               如果想直接跳出外层循环，可以在循环前加个别名:

     */


    public static void main(String[] args) {

        //while循环 实现输出 1-10
        //i可以作为输出的值，同时也可以作为判断循环结束的条件
//        int i = 1;
//        while(i>10){
//            System.out.println("hello world!");
//            i++;
//        }
//        System.out.println(i);

        //do...while 的使用
//        do{
//            System.out.println(i);
//            i++;
//        }while(i>10);
//        System.out.println(i);

        //for循环 输出1-10
//        for(int i=1;i<=10;i++){
//            System.out.println(i);
//        }

        //使用嵌套循环，完成笛卡尔积
        //可以使用别名跳出相应循环
        first:for(int i=1;i<=3;i++){
            second:for(int j=2;j<=4;j++){
                if(i==j){
                    break first;
                }
                System.out.println(i+","+j);
            }
        }

        //九九乘法表
        //用i临时变量表示行(一共有9行)
//        for(int i=1;i<=9;i++){
//            for(int j=1;j<=i;j++){
//                System.out.print(j+"*"+i+"="+i*j+" ");
//            }
//            System.out.println();
//        }


    }

}
